From: Carlos Garnacho Date: Wed, 29 Jun 2022 11:06:07 +0000 (+0200) Subject: ibusCandidatePopup: Set OSK candidates list visibility correctly X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~461^2^2~296 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=237ba24dbeae;p=gnome-shell.git ibusCandidatePopup: Set OSK candidates list visibility correctly Right now, we don't pay much attention to visibility hints from IBus about the candidates list for the OSK suggestions bar. Since some IMs rely on this visibility being honored, do that. To fix this, the visibility hints for the lookup table are now propagated to the keyboard, so the Suggestions actor hides its internal candidate buttons. Since the Suggestions actor gets its minimum height from CSS, this does not result in OSK size jumps. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5601 Part-of: --- diff --git a/js/ui/ibusCandidatePopup.js b/js/ui/ibusCandidatePopup.js index c57e289cb..340f9a8e1 100644 --- a/js/ui/ibusCandidatePopup.js +++ b/js/ui/ibusCandidatePopup.js @@ -270,6 +270,7 @@ class IbusCandidatePopup extends BoxPointer.BoxPointer { indexes.push(indexLabel.get_text()); Main.keyboard.resetSuggestions(); + Main.keyboard.setSuggestionsVisible(visible); let candidates = []; for (let i = startIndex; i < endIndex; ++i) { @@ -289,10 +290,12 @@ class IbusCandidatePopup extends BoxPointer.BoxPointer { this._candidateArea.updateButtons(lookupTable.is_round(), page, nPages); }); panelService.connect('show-lookup-table', () => { + Main.keyboard.setSuggestionsVisible(true); this._candidateArea.show(); this._updateVisibility(); }); panelService.connect('hide-lookup-table', () => { + Main.keyboard.setSuggestionsVisible(false); this._candidateArea.hide(); this._updateVisibility(); }); diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index c819265eb..ac2a800b4 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -227,6 +227,11 @@ class Suggestions extends St.BoxLayout { clear() { this.remove_all_children(); } + + setVisible(visible) { + for (const child of this) + child.visible = visible; + } }); var LanguageSelectionPopup = class extends PopupMenu.PopupMenu { @@ -1940,6 +1945,10 @@ var Keyboard = GObject.registerClass({ this._suggestions.clear(); } + setSuggestionsVisible(visible) { + this._suggestions?.setVisible(visible); + } + addSuggestion(text, callback) { if (!this._suggestions) return;